//
//  CalculateTool.m
//  TLYLSF
//
//  Created by MC on 2017/6/7.
//  Copyright © 2017年 MC. All rights reserved.
//

#import "CalculateTool.h"
#import "MCMathUnits.h"
@implementation CalculateTool
/*
 * 命名：
 *
 * 直选-》Direct
 * 任选-》Optional
 * 组选-》Group
 *
 * 组合-》Combination
 *
 * 前一-》Before_One
 * 前二-》Before_Two
 * 前三-》Before_Three
 *
 * 单式-》Simple
 * 复式-》Double
 *
 * 定位胆-》LocalD
 * 不定胆-》UnsureD
 * 胆拖-》DT
 *
 * 拖码的个数-》TMcode
 * 胆码的个数-》DMcode
 */
//Direct
#pragma mark-----十一选五(算法)
/*
 * 任选复式
 * type：任选复式类型
 * MC_CCOMBINATION(所选球的个数,type )
 */
+(int)GetOptional_DoubleWithType:(Type_Optional_Double)type andN:(int)n{
    return MC_CCOMBINATION(n, type);
}

/*
 * 任选胆拖
 * TMcode:拖码的个数
 * DMcode:胆码的个数
 * MC_CCOMBINATION(拖码的个数,type-胆码的个数)
 *
 */
+(int)GetOptional_DuplexWithType:(Type_Optional_Duplex)type andTMcode:(int)TMcode andDMcode:(int)DMcode{
    return MC_CCOMBINATION(TMcode, type-DMcode);
}

/*
 * 前一
 * 注数=所选号码的个数
 * num:所选球的个数
 */
+(int)Get_Before_OneWithNum:(int)num{
    return num;
}
/*
 * 不定胆
 * num:所选球的个数
 */
+(int)Get_UnsureDWithNum:(int)num{
    return num;
}
#pragma 前二系列
/*
 * 前二
 * 直选复式
 *
 */
+(int)Get_Before_Two_DirectDoubleWithFirstArr:(NSArray *)firstArr andSecondArr:(NSArray *)secondArr{
    
    int count=0;
    for (NSNumber * num1 in firstArr) {
        for ( NSNumber * num2 in secondArr) {
            if (![num1 isEqualToNumber:num2]) {
                count++;
            }
        }
    }
    return count;
    
}

/*
 * 前二
 * 直选组合
 * num:所选球的个数
 */
+(int)Get_Before_Two_DirectCombinationWithNum:(int)num{
    return MC_ACOMBINATION(num, 2);
}

/*
 * 前二
 * 直选胆拖
 *
 */
+(int)Get_Before_Two_DirectDTWithTMcode:(int)TMcode{
    return MC_CCOMBINATION(TMcode, 1)*MC_ACOMBINATION(2, 2);
}

/*
 * 前二
 * 组选复式
 *
 */
+(int)Get_Before_Two_GroupDoubleWithNum:(int)num{
    return MC_CCOMBINATION(num, 2);
}

/*
 * 前二
 * 组选胆拖
 *
 */
+(int)Get_Before_Two_GroupDTWithTMcode:(int)TMcode{
    return MC_CCOMBINATION(TMcode, 1);
}

/*
 * 前二
 * 所有单式玩法
 * 注数=空格隔开的号码个数
 */
+(int)Get_Before_Two_SimpleWithArr:(NSArray *)arr{
    
    return (int)arr.count;
    
}


#pragma 前三系列
/*
 * 前三
 * 直选复式
 *
 */
+(int)Get_Before_Three_DirectDoubleWithFirstArr:(NSArray *)firstArr andSecondArr:(NSArray *)secondArr andThirdArr:(NSArray *)thirdArr{
    
    int  count =0;
    /*
     * 方法一
     */
    for (NSNumber * num1 in firstArr) {
        for ( NSNumber * num2 in secondArr) {
            for ( NSNumber * num3 in thirdArr) {
                if (![num1 isEqualToNumber:num2]) {//num1!=num2!=num3
                    if (![num3 isEqualToNumber:num2]) {
                        if (![num3 isEqualToNumber:num1]) {
                            count++;
                        }
                    }
                }
            }
        }
    }
    return count;
}

/*
 * 前三
 * 直选组合
 *
 */
+(int)Get_Before_Three_DirectCombinationWithNum:(int)num{
    return MC_ACOMBINATION(num, 3);
}

/*
 * 前三
 * 直选胆拖
 *
 */
+(int)Get_Before_Three_DirectDTWithTMcode:(int)TMcode andDMcode:(int)DMcode{
    return MC_CCOMBINATION(TMcode, 3-DMcode)*MC_ACOMBINATION(3, 3);
}

/*
 * 前三
 * 组选复式
 *
 */
+(int)Get_Before_Three_GroupDoubleWithNum:(int)num{
    return MC_CCOMBINATION(num, 3);
}

/*
 * 前三
 * 组选胆拖
 *
 */
+(int)Get_Before_Three_GroupDTWithTMcode:(int)TMcode andDMcode:(int)DMcode{
    return MC_CCOMBINATION(TMcode, 3-DMcode);
}

/*
 * 前三
 * 所有单式玩法
 * 注数=空格隔开的号码个数
 */
+(int)Get_Before_Three_SimpleWithArr:(NSArray *)arr{
    return (int)arr.count;
}

/*
 * 定位胆
 */
+(int)Get_LocalDWithFirstArr:(NSArray *)firstArr andSecondArr:(NSArray *)secondArr andThirdArr:(NSArray *)thirdArr{
    return (int)(firstArr.count+secondArr.count+thirdArr.count);
}


/*
 * 任选单式
 * 注数=空格隔开的号码个数
 */
+(int)Get_Optional_SimpleWithArr:(NSArray *)arr{
    return (int)arr.count;
}
@end













